﻿#ifndef I_ALGORITHM_PLUGIN_H
#define I_ALGORITHM_PLUGIN_H

#include <QObject>
#include <QtPlugin>
#include <QVariantMap>
#include "algorithm_plugin_datatype.h"

class IAlgorithmPlugin
{
public:
    virtual ~IAlgorithmPlugin() {}

    // 返回插件名称
    virtual QString name() const = 0;

    // 初始化配置，例如参数设定
    virtual void config(const std::unique_ptr<AlgorithmConfigBase>& config) = 0;

    // 主分析函数，输入/输出均使用 QVariantMap
    virtual std::unique_ptr<AlgorithmResultBase> analyze(const double* const data, int size) = 0;
};

#define IAlgorithmPlugin_iid "org.qt-project.Qt.Example.IAlgorithmPlugin"
Q_DECLARE_INTERFACE(IAlgorithmPlugin, IAlgorithmPlugin_iid)

#endif // I_ALGORITHM_PLUGIN_H
